#pragma once

namespace WiiCIS {
	namespace IO {
		class Device;
	}

	struct WiimoteState;

	class Wiimote {
	private:
		IO::Device *device;

	public:
		WIICIS_EXPORT Wiimote();
		WIICIS_EXPORT ~Wiimote();

		WIICIS_EXPORT bool isConnected() const;
		WIICIS_EXPORT bool Connect();
		WIICIS_EXPORT void Disconnect();

		WIICIS_EXPORT bool getRumble() const;
		WIICIS_EXPORT LedIndex getLeds() const;

		WIICIS_EXPORT void setRumble(bool value);
		WIICIS_EXPORT void setLeds(LedIndex value);

		WIICIS_EXPORT const WiimoteState getState();
	};
};